package com.itfenghuang.day01;

public class A00_复习 {
    public static void main(String[] args) {


        /*
            继承 extendser
            已有的类中派出新的类,  新的类可以继承原本类中的属性和方法,并可以扩展其功能
            特点:
                提高了代码的复用性
                使类和类之间产生了关系,这种关系成了构成多态的前提,但是提高了耦合性(高内聚,低耦合)
                java中只能单继承
                可以多层继承,但不能循环继承

                成员方法名相同会调用子类中的方法
                成员方法名不同会调用父类中的方法

                成员变量名相同  取父类中的值
                成员变量名不同  取子类中的值
/////////////////////////////////////////////////////////////////////////////////////////////
            创建子类对象的时候,会去调用父类的构造方法,如果自已没有显示声明,
            系统会默认添加一个super()  调用父类的空参结构

            super 其实是一个父类的标识,可以认为是父类对象的引用

            this和super  都必须放在有效代码的第一行
            区别
              this  调用构造方法,调用的是本类的构造方法,
              super 调用构造方法,调用的是当前类的父类的构造方法

             super  在子类中调用父类的属性和父类的成员方法
             this 调用当前类的

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        *   检验方法是否重写  Override(重写)
        *   重写:  在继承关系下,子类对父类的方法的重新实现,方法名,参数列表,返回值类型都相同,访问修饰符只能扩大或相同

            Overload重载:在同一类中,方法名相同,参数列表不同(个数,类型,顺序),与返回值无关

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          1.private 修饰的成员变量和成员方法是被子类继承的,但是
             因为private 的特殊性,所以不能再子类中访问
          2.子类不能去继承父类的构造方法,但是可以使用super关键字去调用

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////




         */
        mouse mouse = new mouse();
        tiger tiger = new tiger();
        tiger.eat();
        mouse.myself();
        System.out.println(mouse.age);


    }
}

class Aniaml1{
    private String name="鼠鼠";
    public int  age;
    public String gender;

    public void eat(){
        System.out.println("恰饭");
    }

    public Aniaml1() {
    }

    public Aniaml1(String name, int age, String gender) {
        this.name =name;
        this.age = age;
        this.gender = gender;
    }
    public void myself(){
        System.out.println(name+"我啊");
        System.out.println(age+"岁了");
        System.out.println(gender);
    }
    public void fang(){
        System.out.println("父测试");
    }
}

class mouse extends Aniaml1{
    public void aaa(){
        super.age=12;
        super.fang();
        this.fang();
    }
    public void fang(){
        System.out.println("子测试");
    }

}
class tiger extends Aniaml1{

}































